#! user/bin/python
# -*- coding: utf-8 -*-

"""
Created on 2021/8/27 15:09

@File: __init__.py.py
@Author: LT
@Description: 我们在导入一个包时，实际上是导入了它的__init__.py文件。
              这样我们可以在__init__.py文件中批量导入我们所需要的模块，而不再需要一个一个的导入。
"""
# 当包目录直接导入时，收集此处所有模块的内容
from .mailFetcher import *
from .mailSender import *
from .mailParser import *

print('这个包就是email,poplib,smtplib模块的一个封装层，为了免去一些需躬亲劳烦的细节。')

# 当运行mailtools import *时，导出此处的嵌套模块
__all__ = 'mailFetcher', 'mailSender', 'mailParser'     # __all__的意思要是忘了你就得去查一下了

# 自测代码在selftest.py中，使得mailconfig的路径在运行上面的三个嵌套模块导入得以设置

"""
##################################################################################
mailtools package: 邮件服务器传送接口，在pymail2，PyMailGUI和PyMailCGI中使用；
可进行载入，发送，解析，撰写和删除，包括各部分的附件，(email和Unicode类型的)编码，等等；
这里的解析器，抓取器和发送器类可与使用其方法的子类混用，也可以用作嵌入或独立对象；

这个包还包括便于实现沉默模式等功能的实用子类；
如果pop服务器不进行堆栈top，则载入所有的邮件文本；
这里不处理现场或UI，此外允许每个子类拥有不同的askPassword；
进程回调函数获取状态；
所有调用捕获错误后抛出异常——客户端必须在GUI或其他容器中处理；
这一点将文件变成了包：这里导入嵌套模块以实现向后兼容性；

贯穿所有代码都需要用包相对路径导入语法，因为如果包在别处导入（从使用这个包的其他目录），Py3.X包的目录不再处于模块导入搜索路径中；
抓取时还进行邮件文本的Unicode解码（参考mailFetcher），包括某些email编码的文本组分的负载（参考mailParser）；

TBD: in saveparts, should file be opened in text mode for text/ contypes?
TBD: in walkNamedParts, should we skip oddballs like message/delivery-status?
TBD: Unicode support has not been tested exhaustively: see Chapter 13 for more 
on the Py3.1 email package and its limitations, and the policies used here;
##################################################################################
"""
